LogstorageでAWSの全体構成を可視化する
(2015/6/8更新)インフォサイエンスさんから要望事項についてレスを頂けたので、追記しています。
使用しているAPIがマニュアルに記載されておりましたので、そちらも併せて記載しています。
森永です。
AWS Configという相当使えるサービスがあります。
が、認知度が結構低くてしょぼんとしてます。(re:Inventの時一番テンション上がった新サービスだったので…)
AWS構成を可視化できるサービスなのですが、文字ベースなのでいまいち可視化しきれません。
そのため、図を使って可視化出来るツールがパートナーさんから幾つか出ております。
今回はConfig公開当初から気になっていた、インフォサイエンスさんのLogstorage for AWSを試させて頂きました。
(AWS Summitの時ブースを出されていたのでこれ幸いとブログ記事化を頼みに行ったところ快く許諾頂きました。)
Logstorage自体はAWSのためだけに作られたものではなく、ログを管理するためのツールです。
その一つのバージョンとしてAWSに特化したLogstorage for AWSがあります。
今回使うConfig連携パッケージ以外にも、CloudTrailやCloudWatch Logsとの連携パッケージも用意されています。
ためしてみた
試用版申し込み
1ヶ月間どなたでもお試し出来るようです。
AMIでの試用版が提供されているようなのでそちらを申し込みました。
参考のメール文面を埋めるだけです。10分位で申し込みは出来ます。
AMIから起動
しばらくしたらAMIの情報とテンポラリライセンスが送信されてくるので、AMIから起動してみます。
試用版で用意されているのは、
- Windows Server 2008 R2
- RedHat Enterprise Linux 6.6
のOSです。好きな方で試しましょう。今回はRHELでいきます。
基本的にAMIからEC2をたてるだけなので特に説明はしません。
ただし、LogstorageからAWSのAPIを叩ける必要があるので、ひとまずAdmin権限を持ったIAM Roleを設定しておきましょう。
(何の権限が最低限必要なのかは要検証)
Webコンソールへアクセス
試用版AMIには既にLogstorageがインストールされているので、「http://EC2のIPアドレス:8080」にアクセスしてみます。
セキュリティグループで8080番を開けておきましょう。
アクセスできるとライセンスキーを入力する画面になるので、メールで送付されたテンポラリライセンスを入力します。
認証が完了すると、ログイン画面が表示されます。
管理ユーザ:admin / 初期パスワード:admin でログインします。
入れました!
ここから各種レポートを作成するようです。
Config設定
Configを使用してAWSの構成を可視化するツールなので、ConfigがOFFっていては使えません。
ConfigがONになっていることを確認しましょう。
使ったことがないという方は、こちらやこちらをご覧になり、設定下さい。
この際、SNSの通知も忘れずONにしておきましょう。
この後、トピックのサブスクリプション設定も行います。
SQSの設定
LogstorageではConfigからの通知をSQSに貯めて処理しているようです。
一度に大量の構成変更がなされても大丈夫デスね。
SQSの画面から[Create New Queue]を選択して、名前だけ設定します。
ひとまず他はデフォルトで構いません。
Queueが出来たら、送信できるようPermissionを設定します。
EverybadyにSendMessageをAllowしましょう。(ルー語)
SQSの設定は終わりですが、この後の設定でSQSのURLとARNが必要になるので、ついでにメモをしておきます。
[Dtails]タブから確認することが出来ます。
SNSサブスクリプション設定
続いては、先ほど作ったSQSにConfigからの通知が飛ぶようにSNSのサブスクリプションを設定します。
[Create Subscription]をクリックし新しいサブスクリプションを作成します。
[Protocol]で[Amazon SQS]を選択し、[Endpoint]に先ほどメモしたSQSのARNを入力します。
ここで、Emailでサブスクリプションを作成すると、構成変更が起こる度にメールが飛んできます。
絶対に構築しないリージョン(Tokyo以外)などに設定しておくとリージョンミス等を防げるかもしれません。
サーバでの設定
SSHでEC2へログインして設定を行います。
基本的にSQSのURLだけ設定すれば大丈夫です。
試用版AMIのインストールパスは/usr/local/logstorage/awsですが、自分でインストールされた方は、それに合わせて変更して下さい。
$ sudo vi /usr/local/logstorage/aws/collector/conf/awsconfigcollector.properties
sqsUrl = https://sqs.ap-northeast-1.amazonaws.com/************/awsconfig outputDirectory = /usr/local/logstorage/aws/collector/output/ outputFileNamePrefix = awsconfighistory outputFileEncoding = UTF-8
設定ができたら、収集モジュールを起動します。
そのまま起動すると権限がないと怒られましたので、/usr/local/logstorage/aws以下のオーナーをec2-userに変更しておきます。
$ cd /usr/local/logstorage $ sudo chown -R ec2-user:ec2-user aws $ cd aws/collector/bin $ sudo ./awsconfigcollector.sh [INFO ] [main] - Start collecting AWS Config histories. [INFO ] [main] - Getting config histories from https://sqs.ap-northeast-1.amazonaws.com/425106460401/awsconfig [INFO ] [main] - 1 config histories collected. [INFO ] [main] - Finish collecting.
成功したようです。
レポートの手動出力
ようやく準備が出来ました!早速レポートを出力してみましょう!
LogstorageのWebコンソール左にあるメニューから[レポート]->[レポート作成条件]とたどります。
更に下の階層にガンガン潜っていきます。
[[テンプレート] Logstorage for AWS ]->[Config]->[Configスナップショット]とたどった先が目的地です。
csvとpdfでの出力が出来るようですが、私は図になったAWSの構成を見たいので、pdf一択です。
色々と設定できますが、試用版のAMIでは基本的な設定は既に済んでいるようなので、[実行]ボタンを押します。
見てわかるようにスケジューリングして定期的にレポートを作成なんてことも出来るようです。
実行したら結果は[レポート作成履歴]で確認できます。
ステータスが完了になるまで待つと、[ファイル名]のセルにレポートをダウンロードするためのリンクが出来ます!DL!
出力結果
うおー!!!しゅごい!!!!
空っぽなVPCが物悲しさを醸し出してる!!!(私の検証環境ですが、直前にいらないリソースを消すよう指令が来たためです。)
雲(Internet)からIGWへのつながりや、IGWに繋がるSubnet(Public)、繋がらないSubnet(Private)が一目瞭然に分かります。
解像度を下げているので見えづらいかとは思いますが、各SubnetのCIDRブロックの値や、EIPのアドレス、EC2のインスタンスタイプなども記載されています。EBSに紐づくSnapshotまでも関連性を確認することが出来ます。
これを使えば肥大化したシステムだと見えづらい全体像が一発でわかりますね!AWSちゃんが丸裸!!
要望
触ってみていくつか要望が出たので技術的に可能かは考慮せず記載しておきます。←
- SSHログイン無しでWEBコンソールから全て設定したい(SQSのURL設定など) *1
- 現状リージョン単位でしかレポートを出せないが、VPCなどでフィルタリングして出したい *2
IAM Roleに必要な最低限の権限をしりたい(マニュアルを読みこめばいけそう)
マニュアルに記載されておりました。面目ないです。
Logstorage for AWSで使用するAPI
AWS SDK for Javaの以下のAPIを利用しているようです。
クラス | メソッド |
---|---|
com.amazonaws.services.sqs.AmazonSQSClient | ReceiveMessage |
com.amazonaws.services.sqs.AmazonSQSClient | DeleteMessageBatch |
com.amazonaws.services.config.AmazonConfigClient | DescribeDeliveryChannels |
com.amazonaws.services.config.AmazonConfigClient | DeliverConfigSnapshot |
com.amazonaws.services.config.AmazonConfigClient | DescribeDeliveryChannelStatus |
com.amazonaws.services.s3.AmazonS3Client | ListObject |
com.amazonaws.services.s3.AmazonS3Client | GetObject |
com.amazonaws.services.s3.transfer.TransferManager | Download |
com.amazonaws.services.logs.AWSLogsClient | DescribeLogStreams |
com.amazonaws.services.logs.AWSLogsClient | DescribeLogGroups |
com.amazonaws.services.logs.AWSLogsClient | GetLogEvents |
まとめ
今回はAWS Configで収集した情報を図として可視化するツールとしてLogstorageを試してみました。
AMIで提供されると基本的な設定が既に終わっているので非常に簡単に始めることが出来ました。
お話を聞いたところ、もっと細かい単位でレポートを出せるようにするとのことなので、楽しみです。
他にもいろいろな機能が搭載されていますので、色々と試してみようと思います。